package pl.edu.pw.elka.tinyrepo.client.common;

import java.io.InputStream;
import java.util.EnumMap;
import java.util.Map;
import java.util.Set;

import pl.edu.pw.elka.tinyrepo.common.HTTPHeaderType;
import pl.edu.pw.elka.tinyrepo.common.StatusCode;

/**
 * Wrapper odpowiedzi dla klienta Udostępnia tylko operacje odczytu
 * 
 * @author Anna Stępień
 * @version 15-12-2011
 * 
 */
public class FakeResponse
{
	/** Kod odpowiedzi */
	private final StatusCode statusCode;
	/** Mapa nagłówków i ich wartości */
	private Map<HTTPHeaderType, String> headers = new EnumMap<HTTPHeaderType, String>(
			HTTPHeaderType.class);
	/** Strumień przesłanych danych */
	private final InputStream dataStream;

	public FakeResponse(final StatusCode statusCode,
			final Map<HTTPHeaderType, String> headers,
			final InputStream dataStream)
	{
		this.statusCode = statusCode;
		this.headers = headers;
		this.dataStream = dataStream;
	}

	public final StatusCode getStatusCode()
	{
		return statusCode;
	}

	public final InputStream getDataStream()
	{
		return dataStream;
	}

	public String getFirstLine()
	{
		return "HTTP/1.1 " + statusCode.getCode() + " " + statusCode.toString();
	}

	public final String getHeader(final HTTPHeaderType t)
	{
		return headers.get(t);
	}

	final Set<HTTPHeaderType> getHTTPTypes()
	{
		return headers.keySet();
	}

}
